<?php
class Pages
{
	//$page：当前页码
	//$totle：信息总数；
	//$displaypg：每页显示信息数
	//$url：分页导航中的链接，除了加入不同的查询信息“page”外的部分都与这个URL相同。
	//$shownum：显示中间页码
	//$showlvtao：//中间页码表总长度，为奇数
	//$showtext：显示   1-2/16 记录    1/8 页
	//$showselect：显示下拉列表页码
	static function page($page,$totle,$displaypg,$url='',$shownum=1,$showlvtao=10,$showtext=0,$showselect=0){
		//添加参数
		if( strrchr($url, '?') !== false ){
			$url = $url.'&page';
		}else{
			$url = $url.'?page';
		}
		
		//页码计算：
		$lastpg = ceil($totle/$displaypg); //最后页，也是总页数
		$page = min($lastpg,$page);
		$prepg = $page-1; //上一页
		$nextpg = ($page==$lastpg ? 0 : $page+1); //下一页
		$firstcount = ($page-1)*$displaypg;//（数据库）查询的起始项；
		
		//如果只有一页则跳出函数：
		if($lastpg<=1) return '';
		
		//开始分页导航条代码：
		if ( $showtext == 1 ){
			$pagenav = "<span class='disabled'>".($totle?($firstcount+1):0)."-".min($firstcount+$displaypg,$totle)."/$totle 记录</span><span class='disabled'>$page/$lastpg 页</span>";
		}else{
			$pagenav="";	
		}

		if($prepg) $pagenav.="<a href='$url=1'>首页</a>"; else $pagenav.='<span class="disabled">首页</span>';
		if($prepg) $pagenav.="<a href='$url=$prepg'>上页</a>"; else $pagenav.='<span class="disabled">上页</span>';
		if ( $shownum == 1 ){
			$o = $showlvtao;//中间页码表总长度，为奇数
			$u = ceil($o/2);//根据$o计算单侧页码宽度$u
			$f = $page-$u;//根据当前页$currentPage和单侧宽度$u计算出第一页的起始数字
			if($f<0){$f=0;}//当第一页小于0时，赋值为0
			$n = $lastpg;//总页数
			if($n<1){$n=1;}//当总数小于1时，赋值为1
			if( $page == 1 ){
				$pagenav.='<span class="current">1</span>';
			}else{
				$pagenav.="<a href='$url=1'>1</a>";
			}
			///////////////////////////////////////
			for($i=1;$i<=$o;$i++){
				if($n<=1){break;}//当总页数为1时
				$c=$f+$i;//从第$c开始累加计算
				if($i==1 && $c>2){
					$pagenav.='...';
				}
				if($c==1){continue;}
				if($c==$n){break;}
				if($c==$page){
					$pagenav.='<span class="current">'.$page.'</span>';
				}else{
					$pagenav.="<a href='$url=$c'>$c</a>";
				}
				if($i==$o && $c<$n-1){
					$pagenav.='...';
				}
				if($i>$n){break;}//当总页数小于页码表长度时	
			}
			if($page==$n && $n!=1){
				$pagenav.='<span class="current">'.$n.'</span>';
			}else{
				$pagenav.="<a href='$url=$n'>$n</a>";
			}
		}

		if($nextpg) $pagenav.="<a href='$url=$nextpg'>下页</a>"; else $pagenav.='<span class="disabled">下页</span>';
		if($nextpg) $pagenav.="<a href='$url=$lastpg'>尾页</a>"; else $pagenav.='<span class="disabled">尾页</span>';
		if ($showselect==1){
			//下拉跳转列表，循环列出所有页码：
			$pagenav.="跳至<select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n";
			for($i=1;$i<=$lastpg;$i++){
				if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
					else $pagenav.="<option value='$i'>$i</option>\n";
			}
			$pagenav.="</select>页";
		}
		
		return $pagenav;
	}
}